iT邦幫忙

0

Linux 指令詳解

  • 分享至 

  • xImage
  •  

df

指令說明:檢查硬碟使用量

範例說明:

使用 df
https://ithelp.ithome.com.tw/upload/images/20230704/20114137TMTeYes3k2.png

查詢某個分割區的硬碟使用狀況
使用 df /dev
https://ithelp.ithome.com.tw/upload/images/20230704/20114137o8WgTAG6VF.png

預設的 df 輸出會以 KB 為單位顯示磁碟用量,現在的硬碟容量都很大,這樣的輸出較不好閱讀,
這時可以加上-h,用適合閱讀的方式顯示資訊
使用df -h
https://ithelp.ithome.com.tw/upload/images/20230704/20114137HdvDaAdk4A.png

僅顯示本機磁碟
使用 df -l
https://ithelp.ithome.com.tw/upload/images/20230704/20114137kPfsqVrswH.png


chown

指令說明:更改檔案或目錄的擁有者或群組

範例說明:

同時更改擁有者與群組,連目錄下的所有次目錄或檔案同時更改擁有者。

-R:亦即連同次目錄下的所有檔案都會變更

chown -R "TW\Jack":"群組名稱" /tmp/tom

chown -R "TW\Jack":GroupID /tmp/tom

如何檢視檔案或資料夾的 GroupID ls -ln /tmp


chgrp

指令說明:更改檔案或目錄的擁有群組

範例說明:

更改擁有群組

chgrp "群組名稱" test.txt


chmod

指令說明:檔案權限的改變

範例說明:

-R:亦即連同次目錄下的所有檔案都會變更

chmod -R 755 /usr/local/tomcat-9.0.50


find

指令說明:可以依照權限、擁有者、群組、檔案類型、日期與大小等條件來搜尋

範例說明:

找尋在 /home 目錄底下檔案名稱為 test.txt 的檔案:

find /home -name test.txt

找尋在根目錄底下名稱為 MyDir 的目錄:

find /usr/local/tomcat-9 -type d -name MyDir

使用 find 來執行 chmod:

find /usr/local/tomcat-9 -type d -exec chmod 755 {} \;
find /usr/local/tomcat-9 -type f -exec chmod 755 {} \;

find 的 -type 參數可以指定檔案的類型,常用的選項有:

d:目錄。

p:具名的 pipe(FIFO)。

f:一般的檔案。

l:連結檔,如果與 -L 或 -follow 參數同時使用時,就只會搜尋到有問題的連結檔,如果想要與 -L 同時使用,請改用 -xtype。

s:socket 檔案。

尋找文件檔案裡面的字串:

find "/usr/local" -name "*.txt" -exec grep -H "HelloString" {} \;

grep -rnw '/usr/local/tomcat/conf' -e 'SearchString'

grep -rnw 'SearchString' '/usr/local/tomcat/conf'

替換文件檔案裡面的字串:

find /tmp/www/hnsc/ -type f -exec sed -i "s/172.22.168.22/172.22.168.23/g" {} \;


kill

指令說明:刪除執行中的程式或工作

範例說明:

kill -9 [PID]

PID:就是要中止的行程 ID(Process ID),這個 PID 可以從 ps 指令的輸出中得到。

參數說明:

-2:這個訊號與鍵盤輸入 Ctrl + C 是同樣的動作,也是通知程式停止執行。

-9:立刻強制停止程式執行。

-15:以正常的程序通知程式停止執行,這是預設的訊號。

-l:列出所有可用的訊號。


alias

指令說明:設置指令的別名,讓這個指令別名永久有效,要寫入個別使用者的 ~/.bashrc 中。

範例說明:

echo "alias MyCmd='cd /usr/local/tomcat-9.0.50/'" >> ~/.bashrc

source ~/.bashrc


cat

指令說明:cat 是 Concatenate (連續) 的簡寫, 主要的功能是將一個檔案的內容連續的印出在螢幕上面。

範例說明:

cat [file name]

選項與參數:

-A:相當於 -vET 的整合選項,可列出一些特殊字符而不是空白而已

-b:列出行號,僅針對非空白行做行號顯示,空白行不標行號

-E:將結尾的斷行字元 $ 顯示出來

-n:列印出行號,連同空白行也會有行號,與 -b 的選項不同

-T:將 [tab] 按鍵以 ^I 顯示出來

-v:列出一些看不出來的特殊字符

清空文件的內容:

cat /dev/null > /tmp/1.txt


ln

指令說明:建立目錄的捷徑

範例說明:

ln -s /usr/local/openlogic-openjdk-8u282-b08-linux-x64/ /usr/local/java


scp

指令說明:使用 scp 來複製網路上另一台電腦內的檔案

範例說明:

scp -r [遠端電腦的使用者名稱@ip:目錄路徑/檔名] [/本機的目的目錄/目的檔名]

scp -r JackChen@192.168.1.111:/usr/local/tomcat-9.0.50 /tmp

-r:則可連同底下的子目錄及檔案一併複製

按下 ENTER 鍵後,會要求輸入遠端電腦的使用者的密碼,輸入正確的密碼後,就開始複製

了,因其採 SSH 連線,具安全性且複製速度非常快。


sudo

指令說明:

範例說明:

sudo su - root /usr/local/tomcat/bin/startup.sh

sudo su - root /usr/local/apache2/bin/apachectl -k start


tar

指令說明:

一、什麼是 tar

在 Linux 上,為了便於檔案以及目錄的交流、儲存以及傳輸,我們通常把一大堆檔案以及目錄「打包」為一個單一檔案,這個打包工具就是 tar,

而打包好的檔案就稱為 tar ball(xxx.tar),順帶一提的是 tar 本身並沒有壓縮檔案,而我們經常看到的 xxx.tar.gz(xxx.tar.gz) 是 tar ball 再經 gzip 壓縮,而 xxx.tar.Z 則是 tar ball 再經 compress 壓縮,而 xxx.tar.bz2 則是 tar ball 再經 bzip2 壓縮。

二、如何打包

tar [zcvf] [tar ball 檔案] [被 tar 的檔案或目錄]
ex : tar -zcvf tc.tar.gz /etc/*

c:create 一個 tar ball

f:指定 tar ball 檔名

v:verbose,列出過程

z:使用 gzip 壓縮 tar ball

三、如何解出

tar [-zxvf] [tar ball 檔案] [被 tar 的檔案或目錄]
ex : tar -zxvf etc.tar.gz /home/

x:解出 tar ball

f:指定 tar ball檔名

v:verbose,列出過程

z:使用 gzip 解壓縮(.gz)


touch

指令說明:更改檔案時間戳記

範例說明:

touch [-參數] 檔案

參數說明:

-a : 僅修訂 access time;

-c : 僅修改時間,而不建立檔案;

-d : 後面可以接日期,也可以使用 --date="日期或時間"

-m : 僅修改 mtime ;

-t : 後面可以接時間,格式為[YYMMDDhhmm]

touch -t 1501011646 test.txt

touch -t 201509301657 /usr/local/tomcat/conf/server.xml


wget

指令說明:一個非交談式的網路抓檔工具

範例說明:

wget --tries=1 --timeout=60 --background --quota=0 http://www.domain.com.tw/website/DataSyncServlet

用法: wget [選項]... [URL]...

長選項必須用的參數在使用短選項時也是必須的。

啟動:
  -V,  --version           顯示 Wget 版本並離開
  -h,  --help              印出這段說明文字
  -b,  --background        啟動後進入背景作業
  -e,  --execute=指令      執行 .wgetrc 形式的指令

紀錄訊息及輸入檔案:
  -o,  --output-file=檔案    將紀錄訊息寫入<檔案>中
  -a,  --append-output=檔案  將紀錄訊息加入<檔案>末端
  -d,  --debug               印出偵錯訊息
  -q,  --quiet               安靜模式 (不輸出訊息)
  -v,  --verbose             詳細輸出模式 (預設使用這個模式)
  -nv, --non-verbose         關閉詳細輸出模式,但不啟用安靜模式
  -i,  --input-file=檔案     下載從檔案中找到的 URL
  -F,  --force-html          以 HTML 方式處理輸入檔
  -B,  --base=URL            使用 -F -i file 選項時,在相對鏈結前加入 URL

下載:
  -t,  --tries=次數              設定重試次數 (0 表示無限)
       --retry-connrefused       即使連線被拒仍然會不斷嘗試
  -O   --output-document=檔案    將資料寫入指定檔案中
  -nc, --no-clobber              不覆寫已經存在的檔案
  -c,  --continue                繼續下載已下載了一部份的檔案
       --progress=方式           選擇下載進度的表示方式
  -N,  --timestamping           除非遠端檔案比較新,否則不下載遠端檔案
  -S,  --server-response         顯示伺服器回應訊息
       --spider                  不下載任何資料
  -T,  --timeout=秒數            指定所有時限為同一數值
       --dns-timeout=秒數        指定 DNS 查找主機的時限
       --connect-timeout=秒數    指定連線時限
       --read-timeout=秒數       指定讀取資料的時限
  -w,  --wait=秒數               每次下載檔案之前等待指定秒數
       --waitretry=秒數          每次重覆嘗試前稍等一段時間 (由 1 秒至指定秒數不等)
       --random-wait             每次下載之前隨機地指定等待的時間
       --no-proxy                禁止使用代理伺服器
  -Q,  --quota=大小              設定下載資料的限額大小
       --bind-address=位址       使用本機的指定位址 (主機名稱或 IP) 進行連線
       --limit-rate=速率         限制下載速率
       --no-dns-cache            不記憶 DNS 查找主機的資料
       --restrict-file-names=OS  只使用作業系統能夠接受的字元作為檔案字元
       --ignore-case             ignore case when matching files/directories.
  -4,  --inet4-only              只會連接 IPv4 地址
  -6,  --inet6-only              只會連接 IPv6 地址
       --prefer-family=FAMILY    優先採用指定的位址格式,可以是 IPv6、IPv4
                                 或者 none
       --user=用戶               指定 ftp 和 http 用戶名稱
       --password=PASS           指定 ftp 和 http 密碼

目錄:
  -nd, --no-directories           不建立目錄
  -x,  --force-directories        強制建立目錄
  -nH, --no-host-directories      不建立含有遠端主機名稱的目錄
       --protocol-directories     在目錄中加上通訊協定名稱
  -P,  --directory-prefix=名稱    儲存檔案前先建立指定名稱的目錄
       --cut-dirs=數目            忽略遠端目錄中指定<數目>的目錄層

HTTP 選項:
       --http-user=用戶        指定 HTTP 用戶名稱
       --http-passwd=密碼      指定 HTTP 密碼
       --no-cache              不使用伺服器中的快取記憶資料
  -E,  --html-extension        將所有 HTML 文件加上 “.html” 延伸檔名
       --ignore-length         忽略 Content-Length 標頭欄位
       --header=字串           在連線資料標頭中加入指定字串
       --max-redirect          maximum redirections allowed per page.
       --proxy-user=用戶       設定代理伺服器用戶名稱
       --proxy-password=密碼   設定代理伺服器密碼
       --referer=URL           在 HTTP 請求中包括 Referer: URL 標頭
       --save-headers          將 HTTP 連線資料標頭存檔
  -U,  --user-agent=AGENT      宣稱為 AGENT 而不是 Wget/VERSION
       --no-http-keep-alive    不使用 HTTP keep-alive (持久性連線)
       --no-cookies            不使用 cookie
       --load-cookies=檔案     程式啟動時由指定檔案載入 cookie
       --save-cookies=檔案     程式結束後將 cookie 儲存至指定檔案
       --keep-session-cookies  會載入和儲存暫時性的 cookie
       --post-data=字串        使用 POST 方式送出字串
       --post-file=檔案        使用 POST 方式送出檔案內容
       --content-disposition   honor the Content-Disposition header when choosing local file names (EXPERIMENTAL).
       --auth-no-challenge     Send Basic HTTP authentication information without first waiting for the server's challenge.

HTTPS (SSL/TLS) 選項:
       --secure-protocol=PR     選擇安全通訊協定,可以使用 auto, SSLv2, SSLv3 或 TLSv1
       --no-check-certificate   不檢驗伺服器的憑證
       --certificate=檔案       指定用戶端的憑證檔案名稱
       --certificate-type=類型  用戶端憑證的類型,可以是 PEM 或 DER
       --private-key=檔案       指定私鑰檔案
       --private-key-type=類型  私鑰的類型,可以是 PEM 或 DER
       --ca-certificate=檔案    載有憑證管理中心 (CA) 簽章的檔案
       --ca-directory=目錄      載有憑證管理中心 (CA) 簽章的目錄
       --random-file=檔案       作為 SSL 隨機數產生程序 (PRNG) 的來源數據檔案
       --egd-file=檔案          產生隨機數據的 EGD socket 檔案名稱

FTP 選項:
       --ftp-user=用戶         指定 FTP 用戶名稱
       --ftp-password=密碼     設定 FTP 密碼
       --no-remove-listing     不刪除 .listing 檔案
       --no-glob               不展開有萬用字元的 FTP 檔名
       --no-passive-ftp        不使用「被動」傳輸模式
       --retr-symlinks         在遞迴模式中,下載鏈結指示的目標檔案
                               (不包括目錄)
       --preserve-permissions  沿用遠端檔案的權限

遞迴下載:
  -r,  --recursive          遞迴下載
  -l,  --level=數字         最大搜尋深度 (inf 或 0 表示無限)
       --delete-after       刪除下載後的檔案
  -k,  --convert-links      將下載後的 HTML 的鏈結轉換為本地檔案
  -K,  --backup-converted   將檔案 X 轉換前先備份為 X.orig
  -m,  --mirror             相等於 -N -r -l inf --no-remove-listing 選項
  -p,  --page-requisites    下載所有顯示網頁所需的檔案,例如圖片等
       --strict-comments    用嚴格方式 (SGML) 處理 HTML 注釋。

遞迴下載時有關接受/拒絕的選項:
  -A,  --accept=清單               接受的檔案樣式,以逗號分隔
  -R,  --reject=清單               排除的檔案樣式,以逗號分隔
  -D,  --domains=清單              接受的網域,以逗號分隔
       --exclude-domains=清單      排除的網域,以逗號分隔
       --follow-ftp                跟隨 HTML 文件中的 FTP 鏈結
       --follow-tags=清單          會跟隨的 HTML 標籤,以逗號分隔
  -G,  --ignore-tags=清單          會忽略的 HTML 標籤,以逗號分隔
  -H,  --span-hosts                遞迴模式中可進入其它主機
  -L,  --relative                  只跟隨相對鏈結
  -I,  --include-directories=清單  準備下載的目錄
  -X,  --exclude-directories=清單  準備排除的目錄
  -np, --no-parent                 不進入上層的目錄

netstat

指令說明:

範例說明:

用 netstat 偵測 DDOS 攻擊:

netstat -ntu | grep ESTAB | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr

計算連線數:

netstat -an |grep ':1433' |wc -l

查看 tcp port 被哪支程式(Process)佔用:

netstat -nlp |grep 9000
sudo lsof -i :9800 |grep 'LISTEN'


crontab

要在 Linux 上執行固定週期的時程,利用 crontab 這個內建的功能便可以完成,可以根據設置的時間參數來執行例行性的工作排程。

* 7 * * 1-6 /usr/local/MyDir/app/monitor.sh

參數依序是分鐘小時日期月份星期command

※ 星期參數為 0 則代表是星期日。

參數說明:

星號:代表任何時刻都接受的意思

逗號:代表分隔時段,例如:30 9,17 * * * command,代表早上9點半和下午五點半都執行 command。

減號:代表一段時間範圍,例如:15 9-12 * * * command,代表從9點到12點的每個15分都執行 command。

反斜線n:n代表數字,表示每個 n 單位間隔,例如:*/5 * * * * command,代表每隔 5 分鐘執行一次。

操作說明:

crontab 是會根據不同的使用者去判定可以操作的範圍。

crontab -l:列出該使用者擁有的 crontab 指令

crontab -e:編輯該使用者的 crontab 指令

crontab -r:將使用者的 crontab 全部清除(小心使用)

編輯完後就可以存檔離開,Linux 系統便會依照你設定的排程固定做事。

※ 下達指令請用絕對路徑避免錯誤

範例參考:

每五分鐘執行一次測試 shell script
*/5 * * * * /home/ubuntu/test.sh

每天早上九點(除了星期日)執行 report.js
0 9 * * 1-6 node /home/ubuntu/workspace/report.js


查詢教時的指令

chronyc sources


查詢 Linux 發行版與版本

取得核心版本資訊:

uname -a

取得作業系統版本資訊:

cat /etc/redhat-release


echo

清空文件的內容:

echo -n "" > access_log


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言